﻿using System.ComponentModel.DataAnnotations;

namespace Devonline.Core
{
    /// <summary>
    /// 加密算法
    /// </summary>
    public enum EncryptionAlgorithm
    {
        #region 常规非加密编码
        /// <summary>
        /// Base64 编码, 严格意义上不算加密算法, 不推荐在加密场景使用
        /// </summary>
        [Display(Name = "Base64 编码")]
        Base64,
        /// <summary>
        /// BDC 编码, 严格意义上不算加密算法, 不推荐在加密场景使用
        /// </summary>
        [Display(Name = "BDC 编码")]
        BCD,
        /// <summary>
        /// 16进制编码
        /// </summary>
        [Display(Name = "16 进制编码")]
        Hex,
        #endregion

        #region 哈希算法, 散列算法
        /// <summary>
        /// MD5, 弱哈希算法, 不推荐使用
        /// </summary>
        [Display(Name = "MD5 算法")]
        MD5,
        /// <summary>
        /// SHA1 弱哈希算法, 不推荐使用
        /// </summary>
        [Display(Name = "SHA1 算法")]
        SHA1,
        /// <summary>
        /// SHA256 强哈希算法, 推荐使用, 推荐首选
        /// </summary>
        [Display(Name = "SHA256 算法")]
        SHA256,
        /// <summary>
        /// SHA384 强哈希算法, 推荐使用
        /// </summary>
        [Display(Name = "SHA384 算法")]
        SHA384,
        /// <summary>
        /// SHA512 强哈希算法, 推荐使用
        /// </summary>
        [Display(Name = "SHA512 算法")]
        SHA512,
        #endregion

        #region 对称加密算法
        /// <summary>
        /// AES 算法, 推荐算法, 推荐首选 256 位
        /// </summary>
        [Display(Name = "AES 算法")]
        Aes,
        /// <summary>
        /// 三重数据加密标准算法, 推荐算法
        /// </summary>
        [Display(Name = "3DES 算法")]
        TripleDES,
        /// <summary>
        /// DES 弱对称加密算法, 不在推荐使用
        /// </summary>
        [Display(Name = "DES 算法")]
        DES,
        /// <summary>
        /// RC2 弱对称加密算法, 不在推荐使用
        /// </summary>
        [Display(Name = "RC2 算法")]
        RC2,
        /// <summary>
        /// Rijndael 弱对称加密算法, 不在推荐使用
        /// </summary>
        [Display(Name = "Rijndael 算法")]
        Rijndael,
        #endregion

        #region 非对称加密算法, 签名算法
        /// <summary>
        /// RSA 算法, 推荐使用, 推荐首选密钥长度 2048 位
        /// </summary>
        [Display(Name = "RSA 算法")]
        RSA,
        /// <summary>
        /// ECDsa 椭圆曲线数字签名算法
        /// </summary>
        [Display(Name = "ECDsa 算法")]
        ECDSA,
        /// <summary>
        /// ECDiffieHellman 椭圆曲线 Diffie-Hellman (ECDH) 算法
        /// </summary>
        [Display(Name = "ECDiffieHellman 算法")]
        ECDH,
        /// <summary>
        /// DSA 算法, 仅可用于签名, 不如 RSA 安全
        /// </summary>
        [Display(Name = "DSA 算法")]
        DSA
        #endregion
    }
}